package com.alm.handle.util;

import java.io.File;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.List;

public class SliceUpgradeUtil {
    public static  List<String> UpgradeData=new ArrayList<>();
    public static List<String> getFileByte(File file, Integer lenth){
        try {
            List<byte[]> data_list=new ArrayList();
            byte[] bytesArray = new byte[(int) file.length()];
            // 创建一个文件输入流
            FileInputStream fis = new FileInputStream(file);
            // 从文件输入流中读取字节到字节数组中
            fis.read(bytesArray);
            // 关闭文件输入流
            fis.close();
            byte [] bytes=null;
            // 打印字节数组的内容（可选）
            for (int i = 0; i < bytesArray.length; i++) {
                if(i%lenth==0){
                    // 计算总包数
                    int sumData=bytesArray.length%lenth==0?(bytesArray.length/lenth):(bytesArray.length/lenth)+1;
                    //当前包
                    int this_data=i/lenth;
                    if(sumData-this_data==1){ //最后一包的时候 取得剩余长度
                        bytes=new byte[(bytesArray.length%lenth)];
                        data_list.add(bytes);
                    }else{
                        bytes=new byte[lenth];
                        data_list.add(bytes);
                    }
                }
                bytes[(i%lenth)]=bytesArray[i]; //赋值
            }
            List<String> string_list=new ArrayList<>();
            for (byte[] b_data:data_list){
                string_list.add(ByteUtils.getStringByByteArr(b_data));
            }
            UpgradeData=string_list;
            return string_list;
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }

    public static void main(String[] args) {
      List<String> date=
              getFileByte(
                      new File("C:\\Users\\Test\\Desktop\\公司文件夹\\WIFI+BLE.bin"),
                      4000);
      byte [] bytes=ByteUtils.getByteArrByString(date.get(0));
      int a=  CRC16.calculateCRC(bytes,bytes.length);
      System.out.println(a);
    }

}
